const express = require("express");
const router = express.Router();

// 引入控制器
const UsersController = require("../controller/UsersController");
const usersController = new UsersController();

// 引入权限检查中间件
const checkRoleMiddleware = require("../middleware/checkRoleMiddleware");

// 定义用户模块不同操作所需角色列表
const USERS_ROLES = {
  CREATE: [1, 2, 3], // 新增：所有登录用户
  READ: [1, 2, 3], // 查询：所有登录用户
  UPDATE: [1, 2], // 修改：超管, 库管
  DELETE: [1], // 删除：超管
};

// 登录路由，已排除认证
router.post("/login", (req, res) => {
  return usersController.login(req, res);
});
// 添加用户
router.post("/add", checkRoleMiddleware(USERS_ROLES.CREATE), (req, res) =>
  usersController.addUser(req, res)
);

// 修改用户,修改：超管, 库管
router.put("/:user_id", checkRoleMiddleware(USERS_ROLES.UPDATE), (req, res) =>
  usersController.updateUser(req, res)
);

// 软删除用户,状态：从0到-1
router.delete(
  "/:user_id",
  checkRoleMiddleware(USERS_ROLES.DELETE),
  (req, res) => usersController.deleteUser(req, res)
);

// 登出路由,只需要认证,无需权限控制
router.get("/logout", (req, res) => {
  return usersController.logout(req, res);
});

// 获取用户列表,查询：所有登录用户都可以操作
router.get("/", checkRoleMiddleware(USERS_ROLES.READ), (req, res) => {
  return usersController.getUsers(req, res);
});
// 修改密码
router.put("/changePassword/:user_id", checkRoleMiddleware(USERS_ROLES.UPDATE), (req, res) => {
  return usersController.changePassword(req, res);
});
// 重置密码
router.put("/resetPassword/:user_id", checkRoleMiddleware(USERS_ROLES.UPDATE), (req, res) => {
  return usersController.resetPassword(req, res);
});
module.exports = router;
